/**
 * 
 */
package com.desksoft.ecommerce.service.interf.logistics;

import java.util.List;

import com.desksoft.ecommerce.constants.logistics.ClientFieldType;
import com.desksoft.ecommerce.util.result.ServiceResult;
import com.desksoft.ecommerce.vo.logistics.ClientInfoVO;
import com.desksoft.ecommerce.vo.logistics.ClientQryVO;
import com.desksoft.ecommerce.vo.logistics.ClientVO;
import com.desksoft.ecommerce.vo.logistics.ExprPointVO;
import com.desksoft.ecommerce.vo.mall.BuyCartVO;
import com.desksoft.ecommerce.vo.mall.ClientItemQryVO;
import com.desksoft.ecommerce.vo.mall.WholesalePriceVO;
import com.desksoft.utility.pagination.Page;
import com.desksoft.utility.service.ServiceInterface;

/***************************************
 * <pre>
 * 版权所有：杭州迪科软件 保留所有权利
 * 创建日期: Aug 1, 2011 12:42:09 PM
 * 创建作者：yejw
 * 文件名称：IClientService.java
 * 版本：
 * 功能：
 * 最后修改时间：Aug 1, 2011 12:42:09 PM
 * 修改记录：
 * </pre>
 *****************************************/

public interface IClientService extends ServiceInterface {
	
	// ********************** 公共方法 start *****************************

	/**
	 * 获取客户信息列表
	 * 
	 * @param clientQryVO
	 *            客户信息查询值对象
	 * @return
	 */
	public ServiceResult<Page<ClientVO>> getClients(ClientQryVO clientQryVO);
	/**
	 * 根据客户字段类型取商品信息
	 * 
	 * @param type
	 *           客户字段类型
	 * @param args
	 *            用户编码/客户编码/客户拼音码/客户名称 或 客户编码/客户拼音码/客户名称数组
	 * @return
	 */
	public ServiceResult<List<ClientVO>> getClients(ClientFieldType type, String... args);
	
	/**
	 * 验证客户合法性
	 * 
	 * @param exprPointVO
	 *            条件判断组合
	 * @return
	 */
	public ServiceResult<ClientVO> isClientsValid(ExprPointVO  exprPointVO);
	
	
	/**
	 * 根据商品编码查询商品信息
	 * 
	 * @param clientVO
	 *           vo 属性   clientCode    客户编码
	 * @return
	 */
	public ServiceResult<ClientVO> getClientByID(ClientVO clientVO);
	// ********************** 公共方法 end *******************************
	
	/**
	 * 手机平台客户查询
	 */
	public ServiceResult<List<ClientInfoVO>> getClientInfo(ClientInfoVO clientInfoVO);
	
	/**
	 * 手机平台根据客户名称查询
	 */
	public ServiceResult<List<ClientInfoVO>> queryClientByClientName(ClientInfoVO clientInfoVO);
	
	/**
	 * 查询所有的客户信息
	 */
	public ServiceResult<List<ClientInfoVO>> getAllCustomerInfo();
	
	/**
	 * 查询商品专供信息
	 */
	public ServiceResult<Page<ClientItemQryVO>> getClientItemSup(ClientItemQryVO clientItemQryVO);
	
	/**
	 * 查询商品专供总数
	 */
	public ServiceResult<Integer> getClientItemCount(ClientItemQryVO clientItemQryVO);
	
	/**
	 * 查询商品专供
	 * @param resBuyCartVO
	 * @param whovo
	 * @return
	 */
	public ServiceResult<BuyCartVO> doCsStoreItem(WholesalePriceVO whovo);
	
	
}
